HAL JPEG IRQ handler and callbacks functions migration

This section provides information about HAL JPEG interrupt handling and callbacks for STM32 HAL1 to HAL2 migration.

HAL JPEG callback functions

HAL1

HAL2

Function prototype

HAL_JPEG_InfoReadyCallback(JPEG_HandleTypeDef *hjpeg,
                           JPEG_ConfTypeDef *pInfo)

HAL_JPEG_EncodeCpltCallback(JPEG_HandleTypeDef *hjpeg)

HAL_JPEG_DecodeCpltCallback(JPEG_HandleTypeDef *hjpeg)

HAL_JPEG_ErrorCallback(JPEG_HandleTypeDef *hjpeg)

HAL_JPEG_GetDataCallback(JPEG_HandleTypeDef *hjpeg,
                         uint32_t NbDecodedData)

HAL_JPEG_DataReadyCallback(JPEG_HandleTypeDef *hjpeg,
                           uint8_t *pDataOut,
                           uint32_t OutDataLength)
HAL_JPEG_InfoReadyCallback(hal_jpeg_handle_t *hjpeg)


HAL_JPEG_EncodeCpltCallback(hal_jpeg_handle_t *hjpeg)

HAL_JPEG_DecodeCpltCallback(hal_jpeg_handle_t *hjpeg)

HAL_JPEG_ErrorCallback(hal_jpeg_handle_t *hjpeg)

HAL_JPEG_GetDataCallback(hal_jpeg_handle_t *hjpeg,
                         uint32_t nb_decoded_data_byte)

HAL_JPEG_DataReadyCallback(hal_jpeg_handle_t *hjpeg,
                           const uint8_t *p_data_out,
                           uint32_t out_data_length_byte)

Example usage

HAL_StatusTypeDef jpeg_info_status;
void HAL_JPEG_InfoReadyCallback(JPEG_HandleTypeDef *hjpeg, JPEG_ConfTypeDef *pInfo)
{
  /* the JPEG decoding  such as image width, height, color space, and subsampling
  are available in the pInfo structure and it can be used by the user */
}
HAL_StatusTypeDef jpeg_info_status;
hal_jpeg_config_t info;
void HAL_JPEG_InfoReadyCallback(JPEG_HandleTypeDef *hjpeg)
{
  /* The HAL_JPEG_InfoReadyCallback informs the user that the JPEG information are
  ready and can be retrieved by calling the HAL_JPEG_GetLastDecodeInfo function */
  jpeg_info_status = HAL_JPEG_GetLastDecodeInfo(hjpeg, &info);
}

HAL JPEG register callback

HAL1

HAL2

Function prototype

In HAL1, a single function is used to register callbacks for JPEG events :

HAL_JPEG_RegisterCallback(JPEG_HandleTypeDef *hjpeg,
                          HAL_JPEG_CallbackIDTypeDef CallbackID,
                          pJPEG_CallbackTypeDef pCallback);

HAL_JPEG_RegisterInfoReadyCallback(JPEG_HandleTypeDef *hjpeg,
                                   pJPEG_InfoReadyCallbackTypeDef pCallback)

HAL_JPEG_RegisterGetDataCallback(JPEG_HandleTypeDef *hjpeg,
                                 pJPEG_GetDataCallbackTypeDef pCallback)

HAL_JPEG_RegisterDataReadyCallback(JPEG_HandleTypeDef *hjpeg,
                                   pJPEG_DataReadyCallbackTypeDef pCallback)

In HAL2, separate callbacks were provided for each JPEG event :

HAL_JPEG_RegisterEncodeCpltCallback(hal_jpeg_handle_t *hjpeg, hal_jpeg_cb_t callback)
HAL_JPEG_RegisterDecodeCpltCallback(hal_jpeg_handle_t *hjpeg, hal_jpeg_cb_t callback)
HAL_JPEG_RegisterErrorCallback(hal_jpeg_handle_t *hjpeg, hal_jpeg_cb_t callback)

HAL_JPEG_RegisterInfoReadyCallback(hal_jpeg_handle_t *hjpeg,
                                   hal_jpeg_cb_t callback)

HAL_JPEG_RegisterGetDataCallback(hal_jpeg_handle_t *hjpeg,
                                 hal_jpeg_get_data_cb_t callback)

HAL_JPEG_RegisterDataReadyCallback(hal_jpeg_handle_t *hjpeg,
                                   hal_jpeg_data_ready_cb_t callback)

Example usage

JPEG_HandleTypeDef hjpeg;
HAL_JPEG_RegisterInfoReadyCallback(&hjpeg, USER_JPEG_InfoReady_Callback);
HAL_JPEG_RegisterGetDataCallback(&hjpeg, USER_JPEG_GetData_Callback);
HAL_JPEG_RegisterDataReadyCallback(&hjpeg, USER_JPEG_DataReady_Callback);
HAL_JPEG_RegisterCallback(&hjpeg, USER_JPEG_EncodeComplete_Callback);
HAL_JPEG_RegisterCallback(&hjpeg, USER_JPEG_DecodeComplete_Callback);
HAL_JPEG_RegisterCallback(&hjpeg, USER_JPEG_Error_Callback);
hal_jpeg_handle_t hjpeg;
HAL_JPEG_RegisterInfoReadyCallback(&hjpeg, USER_JPEG_InfoReady_Callback);
HAL_JPEG_RegisterGetDataCallback(&hjpeg, USER_JPEG_GetData_Callback);
HAL_JPEG_RegisterDataReadyCallback(&hjpeg, USER_JPEG_DataReady_Callback);
HAL_JPEG_RegisterEncodeCpltCallback(&hjpeg, USER_JPEG_EncodeComplete_Callback);
HAL_JPEG_RegisterDecodeCpltCallback(&hjpeg, USER_JPEG_DecodeComplete_Callback);
HAL_JPEG_RegisterErrorCallback(&hjpeg, USER_JPEG_Error_Callback);

Related concepts:


HAL JPEG unregister callback

HAL1

HAL2

Function prototype

HAL_JPEG_UnRegisterInfoReadyCallback(JPEG_HandleTypeDef *hjpeg)


HAL_JPEG_UnRegisterGetDataCallback(JPEG_HandleTypeDef *hjpeg)


HAL_JPEG_UnRegisterDataReadyCallback(JPEG_HandleTypeDef *hjpeg)



HAL_JPEG_UnRegisterCallback(JPEG_HandleTypeDef *hjpeg,
                            HAL_JPEG_CallbackIDTypeDef CallbackID)

unregister callback functions are removed use instead register callback functions with the default weak callback.

Example usage

JPEG_HandleTypeDef hjpeg;
HAL_JPEG_UnRegisterInfoReadyCallback(&hjpeg);
HAL_JPEG_UnRegisterGetDataCallback(&hjpeg);
HAL_JPEG_UnRegisterDataReadyCallback(&hjpeg);
HAL_JPEG_UnRegisterCallback(&hjpeg, HAL_JPEG_ENCODE_CPLT_CB_ID);
HAL_JPEG_UnRegisterCallback(&hjpeg, HAL_JPEG_DECODE_CPLT_CB_ID);
HAL_JPEG_UnRegisterCallback(&hjpeg, HAL_JPEG_ERROR_CB_ID);
hal_jpeg_handle_t hjpeg;
HAL_JPEG_RegisterInfoReadyCallback(&hjpeg, HAL_JPEG_InfoReadyCallback);
HAL_JPEG_RegisterGetDataCallback(&hjpeg, HAL_JPEG_GetDataCallback);
HAL_JPEG_RegisterDataReadyCallback(&hjpeg, HAL_JPEG_DataReadyCallback);
HAL_JPEG_RegisterEncodeCpltCallback(&hjpeg, HAL_JPEG_EncodeCpltCallback);
HAL_JPEG_RegisterDecodeCpltCallback(&hjpeg, HAL_JPEG_DecodeCpltCallback);
HAL_JPEG_RegisterErrorCallback(&hjpeg, HAL_JPEG_ErrorCallback);

Related concepts:


HAL JPEG callback pointers

HAL1

HAL2

pJPEG_CallbackTypeDef()
hal_jpeg_cb_t()
pJPEG_InfoReadyCallbackTypeDef()

No specific pointer type for info ready callback in HAL2; use hal_jpeg_cb_t() instead.

pJPEG_GetDataCallbackTypeDef()
hal_jpeg_get_data_cb_t()
pJPEG_DataReadyCallbackTypeDef()
hal_jpeg_data_ready_cb_t()

HAL JPEG interrupt handler

HAL1

HAL2

HAL_JPEG_IRQHandler(JPEG_HandleTypeDef *hjpeg)
HAL_JPEG_IRQHandler(hal_jpeg_handle_t *hjpeg)